//122 买卖股票的最佳时机
/*
给定一个数组，它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易（多次买卖一支股票）。
*/

//406 根据身高重建队列
/*
假设有打乱顺序的一群人站成一个队列。 每个人由一个整数对 (h, k) 表示，其中 h 是这个人的身高，k 是应该排在这个人前面且身高大于或等于 h 的人数。 例如：[5,2] 表示前面应该有 2 个身高大于等于 5 的人，而 [5,0] 表示前面不应该存在身高大于等于 5 的人。

编写一个算法，根据每个人的身高 h 重建这个队列，使之满足每个整数对 (h, k) 中对人数 k 的要求

示例：
- 输入：[[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]
  输出：[[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]]
*/
vector<vector<int>> reconstructQueue(vector<vector<int>> &people)
{
	sort(people.begin(), people.end(), [](const vector<int> &u, const vector<int> &v) {
		return u[0] < v[0] || (u[0] == v[0] && u[1] > v[1]);
	});
	int n = people.size();
	vector<vector<int>> ans(n);
	for (const vector<int> &person : people)
	{
		int spaces = person[1] + 1;
		for (int i = 0; i < n; ++i)
		{
			if (ans[i].empty())
			{
				--spaces;
				if (!spaces)
				{
					ans[i] = person;
					break;
				}
			}
		}
	}
	return ans;
}
